home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Communications / pop3d / Source / pop3.h < prev    next >
C/C++ Source or Header  |  1995-04-04  |  4KB  |  128 lines

  1. /*
  2.  *    pop3d        - IP/TCP/POP3 server for UNIX 4.3BSD
  3.  *              Post Office Protocol - Version 3 (RFC1225)
  4.  *
  5.  *      (C) Copyright 1991 Regents of the University of California
  6.  *
  7.  *      Permission to use, copy, modify, and distribute this program
  8.  *      for any purpose and without fee is hereby granted, provided
  9.  *      that this copyright and permission notice appear on all copies
  10.  *      and supporting documentation, the name of University of California
  11.  *      not be used in advertising or publicity pertaining to distribution
  12.  *      of the program without specific prior permission, and notice be
  13.  *      given in supporting documentation that copying and distribution is
  14.  *      by permission of the University of California.
  15.  *      The University of California makes no representations about
  16.  *      the suitability of this software for any purpose.  It is provided
  17.  *      "as is" without express or implied warranty.
  18.  *
  19.  *    Katie Stevens
  20.  *    dkstevens@ucdavis.edu
  21.  *     Information Technology -- Campus Access Point
  22.  *    University of California, Davis
  23.  *
  24.  **************************************
  25.  *
  26.  *    pop3.h
  27.  *
  28.  *    REVISIONS:
  29.  *        02-27-90 [ks]    original implementation
  30.  *    1.000    03-04-90 [ks]
  31.  *    1.001    06-24-90 [ks]    allow TRANS state if 0 msgs in folder
  32.  *                implement optional TOP command
  33.  *    1.002    07-22-91 [ks]    -- reset index counter after folder rewind
  34.  *                   in fld_release (Thanks to John Briggs,
  35.  *                   Vitro Corporation, Silver Spring, MD
  36.  *                   for finding this bug!)
  37.  *                -- set umask() value explicitly (Thanks to
  38.  *                   Vikas Aggarwal, JvNCnet, Princeton, NJ
  39.  *                   for suggesting this)
  40.  *                -- remove unnecessary 'return' at end
  41.  *                   of void functions
  42.  *    1.003    03-92    [ks]    close folder before return from main()
  43.  *    1.004   11-13-91 [ks]    leave original mailbox intact during POP
  44.  *                session (Thanks to Dave Cooley,
  45.  *                dwcooley@colby.edu, for suggesting this)
  46.  */
  47. extern char *malloc();
  48. extern char *realloc();
  49. extern char *crypt();
  50.  
  51. /* In folder.c: */
  52. extern int fld_bsmtp();
  53. extern int fld_fromsp();
  54.  
  55. extern void fld_delete();
  56. extern void fld_last();
  57. extern void fld_list();
  58. extern void fld_reset();
  59. extern void fld_retr();
  60. extern void fld_stat();
  61. extern void fld_top();
  62.  
  63. extern void fld_release();
  64.  
  65. /* In util.c: */
  66. extern int verify_user();
  67. extern char *fgetl();
  68. extern void cmd_prepare();
  69. extern void fail();
  70.  
  71. #define SVR_LISTEN_STATE    0x00        /* Wait for client connection */
  72. #define SVR_AUTH_STATE        0x01        /* Expecting USER command */
  73. #define SVR_PASS_STATE        0x02        /* Expecting PASS command */
  74. #define SVR_TRANS_STATE        0x03        /* Process mailbox commands */
  75. #define SVR_FOLD_STATE        0x04        /* Need to open another mbox */
  76. #define SVR_DONE_STATE        -1
  77.  
  78. #define SVR_TIMEOUT_CLI        600        /* 10 minutes */
  79. #define SVR_TIMEOUT_SEND    120        /* 02 minutes */
  80. #define SVR_BUFSIZ        1024
  81. #define CLI_BUFSIZ        128
  82.  
  83. #define DEF_MAIL_DIR        "/private/spool/mail/"
  84. #define DEF_POP3_DIR        "/private/spool/pop/"
  85. #define POP3_TMPFILE        "/tmp/pop3XXXXXX"
  86. #define POP3_RCPT_HDR        "X-POP3-Rcpt:"
  87.  
  88. #define BSMTP_HELO_STATE    0x00        /* Expecting HELO command */
  89. #define BSMTP_MAIL_STATE    0x01        /* Expecting MAIL command */
  90. #define BSMTP_RCPT_STATE    0x02        /* Processing RCPT cmds */
  91. #define BSMTP_DATA_STATE    0x03        /* Processing message */
  92.  
  93. struct fld_item {
  94.     long fmsg_entry;        /* Index in file of start of msg */
  95.     long bcount;            /* #bytes this msg (for scan listing) */
  96.     int status;            /* Status of this message */
  97. #define MSG_DELETED    0x01            /* Msg marked for deletion */
  98.     char *pop_hdr;            /* Extra header for POP3 client */
  99. };
  100. #define FLD_ENTRY_BLOCK        16
  101. #define get_e_array(a,m) {\
  102.     a = (struct fld_item *)malloc(sizeof(struct fld_item)*( (m) + 1));\
  103. }
  104. #define chk_e_size(a,m,i) {\
  105.     if ( ( (i) ) && (!( (i) % (m) )) ) {\
  106.         a = (struct fld_item *)realloc( (a), (sizeof(struct fld_item)*( (i) + (m) + 1)));\
  107.     }\
  108. }
  109.  
  110. /* #define DEBUG            1    Comment out for no debug file */
  111. #define LOGFILE            "/private/log/pop3svr.log"
  112.  
  113. #define FAIL_CONFUSION        51        /* unknown error */
  114. #define FAIL_FILE_ERROR        52        /* file read/write error */
  115. #define FAIL_HANGUP        53        /* client hung up on us */
  116. #define FAIL_LOST_CLIENT    54        /* timeout waiting for client */
  117. #define FAIL_OUT_OF_MEMORY    55        /* out of system memory */
  118. #define FAIL_PROGERR        56        /* unexpected program error */
  119.  
  120. #define NULL_CHAR    '\0'
  121. #define LF_CHAR        '\n'
  122. #define CR_CHAR        '\r'
  123. #define DOT_CHAR    '.'
  124. #define LANKLE_CHAR    '<'
  125. #define RANKLE_CHAR    '>'
  126.  
  127. #define EATSPACE(s)    while (isspace(*s)&&(*s != NULL_CHAR)) ++s
  128.